from rest_framework.views import exception_handler
from .response import APIResponse
from .logger import get_logger

logger = get_logger()


def custom_exception_handler(exc, context):
    # 只要出错，就会走到这个函数，如果有值，就是捕获到了
    # 如果没有值，也是出错了，但是错误没有捕获到
    response = exception_handler(exc, context)
    res = APIResponse(code=999, msg=response.data)
    if not response:
        # 出了异常
        res = APIResponse(code=999, msg='系统错误')
        logger.error('服务端错误，错误原因是：%s,出错的view是：%s，请求地址是：%s' % (
            str(exc),
            str(context['view']),
            context['request'].get_full_path()
        )
         )

    return res
